import { defineStore } from "pinia";
import { ref } from "vue";
export const websocketStore = defineStore('Big-websocke', () => {
  const socket = ref();//web实例
  const arr = ref<any[]>([]);//数据
  const isConnected = ref(false);//是否连接
  // 连接 接收消息
  const connectWebSocket = (url : string) => {
    if (socket.value) {
      socket.value.close();
    }

    socket.value = uni.connectSocket({
      url,
      success: () => {
        console.log('WebSocket 连接成功');
      },
      fail: (err) => {
        console.error('WebSocket 连接失败', err);
      }
    });

    // 监听 WebSocket 连接打开事件
    socket.value.onOpen(() => {
      console.log('WebSocket 已打开');
      isConnected.value = true;
    });

    // 监听 WebSocket 接收消息事件
    // 接收转为对象
    socket.value.onMessage((res) => {
      console.log('收到消息:', res.data);
      arr.value.push(JSON.parse(res.data))
      console.log(JSON.parse(res.data));
      // message.value = res.data;
    });

    // 监听 WebSocket 关闭事件
    socket.value.onClose(() => {
      console.log('WebSocket 已关闭');
      isConnected.value = false;
    });

    // 监听 WebSocket 错误事件
    socket.value.onError((err) => {
      console.error('WebSocket 错误', err);
      isConnected.value = false;
    });
  };
  // 发送消息
  const sendWebSocketMessage = (obj : any) => {
    if (isConnected.value && socket.value) {
      // 发送需要转为json
      socket.value.send({
        data: JSON.stringify(obj),
        success: () => {
          console.log('客户端消息发送成功！！');
        },
        fail: (err : any) => {
          console.error('消息发送失败', err);
        }
      });
    } else {
      console.error('WebSocket 未连接或未准备好');
    }
  };
  return {
    connectWebSocket, sendWebSocketMessage,arr,isConnected,socket
  }
})